#include"led.h"
void led_init()
{
    // GPIO的初始化
    //  将RCC_MP_AHB4ENSETR寄存器第[5：4]设置为1，使能GPIOE外设时钟
    RCC |= (0X3 << 4);
    //  1.GPIOE_MODER[21:20]设置为01，PE10管脚为输出模式
    GPIOE.MODER &= (~(0X3 << 20)); // 先清零
    GPIOE.MODER |= (0X1 << 20);  // 再置位
    //  1.GPIOf_MODER[21:20]设置为01，PF10管脚为输出模式
    GPIOF.MODER &= (~(0X3 << 20)); // 先清零
    GPIOF.MODER |= (0X1 << 20);  // 再置位
    //  1.GPIOE_MODER[17:16]设置为01，PE8管脚为输出模式
    GPIOE.MODER &= (~(0X3 << 16)); // 先清零
    GPIOE.MODER |= (0X1 << 16);  // 再置位

    // 2.GPIOE_OTYPER[10]设置为0，PE10推挽输出
    GPIOE.OTYPER &= (~(0X1 << 10)); // 先清零
    // 2.GPIOF_OTYPER[10]设置为0，PF10推挽输出
    GPIOF.OTYPER &= (~(0X1 << 10)); // 先清零
    // 2.GPIOE_OTYPER[8]设置为0，PE8推挽输出
    GPIOE.OTYPER &= (~(0X1 << 8)); // 先清零

    // 3.GPIOE_OSPEEDR[21:20]设置为00，PE10低速输出、
    GPIOE.OSPEEDR &= (~(0X3 << 20)); // 先清零
    // 3.GPIOF_OSPEEDR[21:20]设置为00，PF10低速输出、
    GPIOF.OSPEEDR &= (~(0X3 << 20)); // 先清零
    // 3.GPIOE_OSPEEDR[17:16]设置为00，PE8低速输出、
    GPIOE.OSPEEDR &= (~(0X3 << 16)); // 先清零

    // 3.GPIOE_OSPEEDR[21:20]设置为00，PE10无上拉下拉电阻、
    GPIOE.PUPDR &= (~(0X3 << 20)); // 先清零
    // 3.GPIOF_OSPEEDR[21:20]设置为00，PF10无上拉下拉电阻
    GPIOF.PUPDR &= (~(0X3 << 20)); // 先清零
    // 3.GPIOE_OSPEEDR[17:16]设置为00，PE8无上拉下拉电阻
    GPIOE.PUPDR &= (~(0X3 << 16)); // 先清零
}
/*
功能：进行LED的控制
参数：
    which:选择哪盏灯  1：LED1  2:LED2   3:LED3
    cmd:控制码   0：关灯   1开灯
*/
void led_ctl(int which,int cmd)
{
    switch(which)
    {
        case 1:
            if(cmd==0)//关灯
                GPIOE.ODR  &= (~(0X1<<10));
            else if(cmd==1)
                GPIOE.ODR  |= (0X1<<10);
            break;
        case 2:
            if(cmd==0)//关灯
                GPIOF.ODR  &= (~(0X1<<10));
            else if(cmd==1)
                GPIOF.ODR  |= (0X1<<10);
            break;
        case 3:
            if(cmd==0)//关灯
                GPIOE.ODR  &= (~(0X1<<8));
            else if(cmd==1)
                GPIOE.ODR  |= (0X1<<8);
            break;
    }

}